// PricingStrategyDriver.java
package com.taxi.analysis.pricing;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

/**
 * 智能定价策略分析驱动程序
 * 功能：协调整个智能定价策略分析MapReduce任务
 * 技术：高级聚合技术（多维度聚合、嵌套聚合、条件聚合、滑动窗口聚合、分层聚合）
 */
public class PricingStrategyDriver {

    public static void main(String[] args) throws Exception {

        if (args.length != 2) {
            System.err.println("使用方法: PricingStrategyDriver <输入路径> <输出路径>");
            System.exit(-1);
        }

        Configuration conf = new Configuration();
        conf.set("mapreduce.job.name", "NYC_Taxi_Intelligent_Pricing_Strategy_Analysis");
        conf.setInt("mapreduce.task.timeout", 3600000);
        conf.setInt("mapreduce.map.memory.mb", 4096);
        conf.setInt("mapreduce.reduce.memory.mb", 8192);
        conf.setInt("mapreduce.map.java.opts.max.heap", 3276);
        conf.setInt("mapreduce.reduce.java.opts.max.heap", 6553);

        Job job = Job.getInstance(conf, "智能定价策略分析_高级聚合技术");

        job.setJarByClass(PricingStrategyDriver.class);
        job.setMapperClass(PricingStrategyMapper.class);
        job.setReducerClass(PricingStrategyReducer.class);

        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        job.setNumReduceTasks(16);

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        System.out.println("=== 启动智能定价策略分析任务 ===");
        System.out.println("使用技术: 高级聚合技术");
        System.out.println("包含技术:");
        System.out.println("- 多维度聚合: 按时间、距离、定价等多维度同时聚合");
        System.out.println("- 嵌套聚合: 多层级嵌套聚合分析");
        System.out.println("- 条件聚合: 基于特定条件的精准聚合");
        System.out.println("- 滑动窗口聚合: 时间窗口内的动态聚合");
        System.out.println("- 分层聚合: 按层次结构进行聚合");
        System.out.println("分析目标: 智能定价策略优化与收益最大化");

        boolean success = job.waitForCompletion(true);

        if (success) {
            System.out.println("=== 智能定价策略分析任务完成 ===");
            System.out.println("分析结果包含:");
            System.out.println("- 多维度定价模式分析");
            System.out.println("- 嵌套层级定价策略");
            System.out.println("- 条件化精准定价");
            System.out.println("- 时间窗口动态定价");
            System.out.println("- 分层定价体系优化");
            System.out.println("- 定价效率与竞争力评估");
        } else {
            System.err.println("=== 智能定价策略分析任务失败 ===");
        }

        System.exit(success ? 0 : 1);
    }
}
